]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Port modal dialogs to the new MonitorConstraint
authorGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 16 Aug 2012 19:37:27 +0000 (21:37 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 16 Aug 2012 19:45:21 +0000 (21:45 +0200)
This commit makes ModalDialog use the new MonitorConstraint instead
of custom code to force itself on the right monitor.
At the same it ports wanda, which has something similar to a modal
dialog, but is not using the ModalDialog module.

https://bugzilla.gnome.org/show_bug.cgi?id=681743

js/ui/modalDialog.js
js/ui/wanda.js

index b182ae9b83cacbdc7af7815620c9c2310cdf1f24..cab256933686770efe0a31faa96f7aa10f37919d 100644 (file)
@@ -14,6 +14,7 @@ const Atk = imports.gi.Atk;
 
 const Params = imports.misc.params;
 
+const Layout = imports.ui.layout;
 const Lightbox = imports.ui.lightbox;
 const Main = imports.ui.main;
 const Tweener = imports.ui.tweener;
@@ -59,6 +60,8 @@ const ModalDialog = new Lang.Class({
         this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
 
         this._backgroundBin = new St.Bin();
+        this._monitorConstraint = new Layout.MonitorConstraint();
+        this._backgroundBin.add_constraint(this._monitorConstraint);
         this._group.add_actor(this._backgroundBin);
 
         this.dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
@@ -196,10 +199,7 @@ const ModalDialog = new Lang.Class({
     },
 
     _fadeOpen: function() {
-        let monitor = Main.layoutManager.currentMonitor;
-
-        this._backgroundBin.set_position(monitor.x, monitor.y);
-        this._backgroundBin.set_size(monitor.width, monitor.height);
+        this._monitorConstraint.index = global.screen.get_current_monitor();
 
         this.state = State.OPENING;
 
index 4a57bf8ccf78cda3f026e7dd4783d6a0b59a7453..e02e7f4586b029d86433c25356c6b6a629c209f9 100644 (file)
@@ -9,6 +9,7 @@ const Signals = imports.signals;
 const St = imports.gi.St;
 
 const IconGrid = imports.ui.iconGrid;
+const Layout = imports.ui.layout;
 const Main = imports.ui.main;
 const Search = imports.ui.search;
 
@@ -142,17 +143,18 @@ const FortuneDialog = new Lang.Class({
         this._button.connect('clicked', Lang.bind(this, this.destroy));
         this._button.child = this._box;
 
-        let monitor = Main.layoutManager.primaryMonitor;
+        this._bin = new St.Bin({ x_align: St.Align.MIDDLE,
+                                 y_align: St.Align.MIDDLE });
+        this._bin.add_constraint(new Layout.MonitorConstraint({ primary: true }));
+        this._bin.add_actor(this._button);
 
-        Main.layoutManager.addChrome(this._button);
-        this._button.set_position(Math.floor(monitor.width / 2 - this._button.width / 2),
-                                  Math.floor(monitor.height / 2 - this._button.height / 2));
+        Main.layoutManager.addChrome(this._bin);
 
         GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 10, Lang.bind(this, this.destroy));
     },
 
     destroy: function() {
-        this._button.destroy();
+        this._bin.destroy();
     }
 });